本文同步分享於個人部落格:Liwen Chiou | Digital Architect & Full-Stack Engineer
「導師,我準備好了。請讓我看看聖劍真正的威力。」
記得 Day 18 那把讓你修到滿頭大汗的「純 JS 鐵劍」嗎?今天,我們要把那份邏輯熔煉,注入我們這 30 天學會的所有核心靈魂,重造成一把具備自動修復與高效能的 React 聖劍。
看好了,這不是取代,而是進化。
在重鑄之前,我們要先對 Day 18 的舊裝備進行「拆解」。
在純 JS 時代,我們把所有的東西都塞進一個大檔案。但在 React 的世界裡,我們要學會 「分家」:
我們不再手動去改 li 的文字。我們只管維護一個名為 todos 的資料陣列。
讓我們看看同樣的功能,在聖劍的加持下發生了什麼變化。
setTodos([...todos, newTodo])。setTodos(todos.filter(t => t.id !== id))。導師的圖解心法: 整個佈告欄被拆成了三個獨立的房間。資料 (State) 像水流一樣從最上層流向下層的組件。

// 💡 這就是 React 的魔力:UI = f(state)
function TodoApp() {
const [todos, setTodos] = useState([]); // 閉包記憶 (Day 07)
const handleAdd = (text) => {
const newTodo = { id: Date.now(), text };
setTodos([...todos, newTodo]); // 展開複製 (Day 06)
};
const handleDelete = (id) => {
setTodos(todos.filter((t) => t.id !== id)); // 陣列篩選 (Day 09)
};
return (
<div className="todo-app">
<TodoInput onAdd={handleAdd} />
<TodoList items={todos} onDelete={handleDelete} />
</div>
);
}
在 Day 18,你是個在工地搬磚的「士兵」,你要親手搬動每一塊磚頭 (DOM)。
在 Day 29,你是個在沙盤前推演的「將軍」,你只管調整沙盤上的旗幟 (State),剩下的搬磚活,React 僕人會幫你做到完美。
這就是為什麼職人們不喜歡直接操作 DOM。因為 當你習慣了將軍的視角,你就再也回不去搬磚的日子了。
第一次用 React 重寫專案時,我總想著要用
document.querySelector。那是我 10 年來的習慣,改不掉。那天前輩把我的滑鼠拿走,跟我說:「導師,試著用資料去思考。如果這是一個沒有螢幕的電腦,你要怎麼在記憶體裡完成這個任務?」
當我想通的那一刻,我發現我不只是學會了 React,我是真正學會了如何寫出「純粹且乾淨」的邏輯。
[] 就行了!